In [1]:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
print('imported successfully')
imported successfully
In [2]:
df=pd.read_csv('Data_Collisions.csv')
In [3]:
df.head()
Out[3]:
X Y ADDRTYPE LOCATION SEVERITY COLLISIONTYPE PERSONCOUNT VEHCOUNT INCDTTM JUNCTIONTYPE WEATHER ROADCOND LIGHTCOND
0 -122.323148 47.703140 Intersection 5TH AVE NE AND NE 103RD ST Injury Collision Angles 2 2 3/27/2013 14:54 At Intersection (intersection related) Overcast Wet Daylight
1 -122.347294 47.647172 Block AURORA BR BETWEEN RAYE ST AND BRIDGE WAY N Property Damage Only Collision Sideswipe 2 2 12/20/2006 18:55 Mid-Block (not related to intersection) Raining Wet Dark - Street Lights On
2 -122.334540 47.607871 Block 4TH AVE BETWEEN SENECA ST AND UNIVERSITY ST Property Damage Only Collision Parked Car 4 3 11/18/2004 10:20 Mid-Block (not related to intersection) Overcast Dry Daylight
3 -122.334803 47.604803 Block 2ND AVE BETWEEN MARION ST AND MADISON ST Property Damage Only Collision Other 3 3 3/29/2013 9:26 Mid-Block (not related to intersection) Clear Dry Daylight
4 -122.306426 47.545739 Intersection SWIFT AVE S AND SWIFT AV OFF RP Injury Collision Angles 2 2 1/28/2004 8:04 At Intersection (intersection related) Raining Wet Daylight
In [4]:
import seaborn as sns
In [5]:
weather = df['WEATHER']
In [6]:
weather
Out[6]:
0         Overcast
1          Raining
2         Overcast
3            Clear
4          Raining
            ...   
194668       Clear
194669     Raining
194670       Clear
194671       Clear
194672       Clear
Name: WEATHER, Length: 194673, dtype: object
In [7]:
weather.head
Out[7]:
<bound method NDFrame.head of 0         Overcast
1          Raining
2         Overcast
3            Clear
4          Raining
            ...   
194668       Clear
194669     Raining
194670       Clear
194671       Clear
194672       Clear
Name: WEATHER, Length: 194673, dtype: object>
In [8]:
plt.figure(figsize=(15,15))
ax = sns.countplot(x="WEATHER", data=df)

More accidents have been reported in clear weather followed by overcast and rainy weather

In [9]:
plt.figure(figsize=(15,15))
ax = sns.countplot(x="ROADCOND", data=df)

More accidents have been reported in dry road conditions followed by wet and unknown circumstances

In [10]:
plt.figure(figsize=(15,15))
ax = sns.countplot(x="LIGHTCOND", data=df)

More accidents have been reported in daylight followed by street light and unknown circumstances

In [11]:
plt.figure(figsize=(15,25))
ax = sns.countplot(x="LOCATION", data=df)
In [12]:
df['LOCATION'].count()
Out[12]:
191996
In [13]:
df.groupby('LOCATION').count()
Out[13]:
X Y ADDRTYPE SEVERITY COLLISIONTYPE PERSONCOUNT VEHCOUNT INCDTTM JUNCTIONTYPE WEATHER ROADCOND LIGHTCOND
LOCATION
10TH AVE AND E ALDER ST 1 1 1 1 1 1 1 1 1 1 1 1
10TH AVE AND E JEFFERSON ST 10 10 10 10 10 10 10 10 10 10 10 10
10TH AVE AND E MADISON ST 10 10 10 10 10 10 10 10 10 10 10 10
10TH AVE AND E PIKE ST 23 23 23 23 22 23 23 23 23 22 22 22
10TH AVE AND E PINE ST 21 21 21 21 20 21 21 21 21 20 20 20
... ... ... ... ... ... ... ... ... ... ... ... ...
YESLER WAY BETWEEN TERRACE ST AND 6TH AVE 23 23 23 23 23 23 23 23 23 23 23 23
YESLER WAY BETWEEN WESTERN AVE AND POST AVE 4 4 4 4 4 4 4 4 4 4 4 4
YORK RD S BETWEEN 36TH AVE S AND 37TH AVE S 4 4 4 4 4 4 4 4 4 4 4 4
YORK RD S BETWEEN S HORTON ST AND 36TH AVE S 2 2 2 2 2 2 2 2 2 2 2 2
YUKON AVE S AND S HENDERSON ST 3 3 3 3 3 3 3 3 3 3 3 3

24102 rows × 12 columns

In [14]:
Location = df['LOCATION'].value_counts()
In [15]:
Location
Out[15]:
BATTERY ST TUNNEL NB BETWEEN ALASKAN WY VI NB AND AURORA AVE N    276
BATTERY ST TUNNEL SB BETWEEN AURORA AVE N AND ALASKAN WY VI SB    271
N NORTHGATE WAY BETWEEN MERIDIAN AVE N AND CORLISS AVE N          265
AURORA AVE N BETWEEN N 117TH PL AND N 125TH ST                    254
6TH AVE AND JAMES ST                                              252
                                                                 ... 
W MCGRAW PL BETWEEN 1ST AVE W AND W MCGRAW E ST                     1
4TH AVE W BETWEEN W HOWE ST AND W CROCKETT ST                       1
GARFIELD ST BETWEEN TAYLOR AVE N AND DEAD END 1                     1
RENTON AVE S AND S VICTOR ST                                        1
32ND AVE S BETWEEN S MASSACHUSETTS ST AND DEAD END 2                1
Name: LOCATION, Length: 24102, dtype: int64
In [16]:
df.head()
Out[16]:
X Y ADDRTYPE LOCATION SEVERITY COLLISIONTYPE PERSONCOUNT VEHCOUNT INCDTTM JUNCTIONTYPE WEATHER ROADCOND LIGHTCOND
0 -122.323148 47.703140 Intersection 5TH AVE NE AND NE 103RD ST Injury Collision Angles 2 2 3/27/2013 14:54 At Intersection (intersection related) Overcast Wet Daylight
1 -122.347294 47.647172 Block AURORA BR BETWEEN RAYE ST AND BRIDGE WAY N Property Damage Only Collision Sideswipe 2 2 12/20/2006 18:55 Mid-Block (not related to intersection) Raining Wet Dark - Street Lights On
2 -122.334540 47.607871 Block 4TH AVE BETWEEN SENECA ST AND UNIVERSITY ST Property Damage Only Collision Parked Car 4 3 11/18/2004 10:20 Mid-Block (not related to intersection) Overcast Dry Daylight
3 -122.334803 47.604803 Block 2ND AVE BETWEEN MARION ST AND MADISON ST Property Damage Only Collision Other 3 3 3/29/2013 9:26 Mid-Block (not related to intersection) Clear Dry Daylight
4 -122.306426 47.545739 Intersection SWIFT AVE S AND SWIFT AV OFF RP Injury Collision Angles 2 2 1/28/2004 8:04 At Intersection (intersection related) Raining Wet Daylight
In [17]:
df.info
Out[17]:
<bound method DataFrame.info of                  X          Y      ADDRTYPE  \
0      -122.323148  47.703140  Intersection   
1      -122.347294  47.647172         Block   
2      -122.334540  47.607871         Block   
3      -122.334803  47.604803         Block   
4      -122.306426  47.545739  Intersection   
...            ...        ...           ...   
194668 -122.290826  47.565408         Block   
194669 -122.344526  47.690924         Block   
194670 -122.306689  47.683047  Intersection   
194671 -122.355317  47.678734  Intersection   
194672 -122.289360  47.611017         Block   

                                               LOCATION  \
0                            5TH AVE NE AND NE 103RD ST   
1            AURORA BR BETWEEN RAYE ST AND BRIDGE WAY N   
2           4TH AVE BETWEEN SENECA ST AND UNIVERSITY ST   
3              2ND AVE BETWEEN MARION ST AND MADISON ST   
4                       SWIFT AVE S AND SWIFT AV OFF RP   
...                                                 ...   
194668  34TH AVE S BETWEEN S DAKOTA ST AND S GENESEE ST   
194669     AURORA AVE N BETWEEN N 85TH ST AND N 86TH ST   
194670                       20TH AVE NE AND NE 75TH ST   
194671                    GREENWOOD AVE N AND N 68TH ST   
194672     34TH AVE BETWEEN E MARION ST AND E SPRING ST   

                              SEVERITY COLLISIONTYPE  PERSONCOUNT  VEHCOUNT  \
0                     Injury Collision        Angles            2         2   
1       Property Damage Only Collision     Sideswipe            2         2   
2       Property Damage Only Collision    Parked Car            4         3   
3       Property Damage Only Collision         Other            3         3   
4                     Injury Collision        Angles            2         2   
...                                ...           ...          ...       ...   
194668                Injury Collision       Head On            3         2   
194669  Property Damage Only Collision    Rear Ended            2         2   
194670                Injury Collision     Left Turn            3         2   
194671                Injury Collision        Cycles            2         1   
194672  Property Damage Only Collision    Rear Ended            2         2   

                 INCDTTM                             JUNCTIONTYPE   WEATHER  \
0        3/27/2013 14:54   At Intersection (intersection related)  Overcast   
1       12/20/2006 18:55  Mid-Block (not related to intersection)   Raining   
2       11/18/2004 10:20  Mid-Block (not related to intersection)  Overcast   
3         3/29/2013 9:26  Mid-Block (not related to intersection)     Clear   
4         1/28/2004 8:04   At Intersection (intersection related)   Raining   
...                  ...                                      ...       ...   
194668   11/12/2018 8:12  Mid-Block (not related to intersection)     Clear   
194669   12/18/2018 9:14  Mid-Block (not related to intersection)   Raining   
194670    1/19/2019 9:25   At Intersection (intersection related)     Clear   
194671   1/15/2019 16:48   At Intersection (intersection related)     Clear   
194672  11/30/2018 15:45  Mid-Block (not related to intersection)     Clear   

       ROADCOND                LIGHTCOND  
0           Wet                 Daylight  
1           Wet  Dark - Street Lights On  
2           Dry                 Daylight  
3           Dry                 Daylight  
4           Wet                 Daylight  
...         ...                      ...  
194668      Dry                 Daylight  
194669      Wet                 Daylight  
194670      Dry                 Daylight  
194671      Dry                     Dusk  
194672      Wet                 Daylight  

[194673 rows x 13 columns]>
In [18]:
Location.describe
Out[18]:
<bound method NDFrame.describe of BATTERY ST TUNNEL NB BETWEEN ALASKAN WY VI NB AND AURORA AVE N    276
BATTERY ST TUNNEL SB BETWEEN AURORA AVE N AND ALASKAN WY VI SB    271
N NORTHGATE WAY BETWEEN MERIDIAN AVE N AND CORLISS AVE N          265
AURORA AVE N BETWEEN N 117TH PL AND N 125TH ST                    254
6TH AVE AND JAMES ST                                              252
                                                                 ... 
W MCGRAW PL BETWEEN 1ST AVE W AND W MCGRAW E ST                     1
4TH AVE W BETWEEN W HOWE ST AND W CROCKETT ST                       1
GARFIELD ST BETWEEN TAYLOR AVE N AND DEAD END 1                     1
RENTON AVE S AND S VICTOR ST                                        1
32ND AVE S BETWEEN S MASSACHUSETTS ST AND DEAD END 2                1
Name: LOCATION, Length: 24102, dtype: int64>
In [19]:
df2 = pd.DataFrame(data=Location)
In [20]:
df2
Out[20]:
LOCATION
BATTERY ST TUNNEL NB BETWEEN ALASKAN WY VI NB AND AURORA AVE N 276
BATTERY ST TUNNEL SB BETWEEN AURORA AVE N AND ALASKAN WY VI SB 271
N NORTHGATE WAY BETWEEN MERIDIAN AVE N AND CORLISS AVE N 265
AURORA AVE N BETWEEN N 117TH PL AND N 125TH ST 254
6TH AVE AND JAMES ST 252
... ...
W MCGRAW PL BETWEEN 1ST AVE W AND W MCGRAW E ST 1
4TH AVE W BETWEEN W HOWE ST AND W CROCKETT ST 1
GARFIELD ST BETWEEN TAYLOR AVE N AND DEAD END 1 1
RENTON AVE S AND S VICTOR ST 1
32ND AVE S BETWEEN S MASSACHUSETTS ST AND DEAD END 2 1

24102 rows × 1 columns

In [22]:
Location.describe
Out[22]:
<bound method NDFrame.describe of BATTERY ST TUNNEL NB BETWEEN ALASKAN WY VI NB AND AURORA AVE N    276
BATTERY ST TUNNEL SB BETWEEN AURORA AVE N AND ALASKAN WY VI SB    271
N NORTHGATE WAY BETWEEN MERIDIAN AVE N AND CORLISS AVE N          265
AURORA AVE N BETWEEN N 117TH PL AND N 125TH ST                    254
6TH AVE AND JAMES ST                                              252
                                                                 ... 
W MCGRAW PL BETWEEN 1ST AVE W AND W MCGRAW E ST                     1
4TH AVE W BETWEEN W HOWE ST AND W CROCKETT ST                       1
GARFIELD ST BETWEEN TAYLOR AVE N AND DEAD END 1                     1
RENTON AVE S AND S VICTOR ST                                        1
32ND AVE S BETWEEN S MASSACHUSETTS ST AND DEAD END 2                1
Name: LOCATION, Length: 24102, dtype: int64>
In [23]:
#Creating a dictionary for LIGHTCOND
light = {'Daylight': 1,'Dark - Street Lights On': 2,'Dusk': 3, 'Dark - No Street Lights': 4 }
light
Out[23]:
{'Daylight': 1,
 'Dark - Street Lights On': 2,
 'Dusk': 3,
 'Dark - No Street Lights': 4}
In [24]:
df['LIGHTCOND'] = df['LIGHTCOND'].map(light)
df['LIGHTCOND']
Out[24]:
0         1.0
1         2.0
2         1.0
3         1.0
4         1.0
         ... 
194668    1.0
194669    1.0
194670    1.0
194671    3.0
194672    1.0
Name: LIGHTCOND, Length: 194673, dtype: float64
In [25]:
z = df['LIGHTCOND']
In [26]:
z
Out[26]:
0         1.0
1         2.0
2         1.0
3         1.0
4         1.0
         ... 
194668    1.0
194669    1.0
194670    1.0
194671    3.0
194672    1.0
Name: LIGHTCOND, Length: 194673, dtype: float64
In [30]:
import plotly.graph_objects as go
import seaborn as sns
#from ggplot import *
print('imported successfully')
imported successfully
In [31]:
#creating the heatmap
fig = go.Figure(data=go.Heatmap(
          x = df['WEATHER'],
          y = df['LOCATION'],
          z = z,
          type = 'heatmap',
          colorscale = 'Viridis', hoverongaps = False))
In [32]:
fig.show()

Result

After analysing the whole data set it is clear that more accidents are likely to occur on a clear day with day and dry road conditions at certian locations identified above

In [ ]: